OSSデータカタログの決定版!?OpenMetadataがかなりイケてるので紹介したい
本記事では、最近登場したばかりのOSSデータカタログ OpenMetadata についてご紹介していきます。
商用製品縛りでデータ系SaaSを紹介してきた本アドベントカレンダーですが、最後の23製品目はOSSのデータカタログをご紹介します。というのも、商用製品並みに良くできているんですよねコレ。
OpenMetadataについて
OpenMetadataは、2021年8月に最初のバージョン0.3.0がリリースされたOSSのデータカタログです。1ヶ月サイクルでリリースするという驚異的な開発速度で改善や機能拡張が進み、2021年12月23日現在でバージョンは0.7.0がリリースされています。
これまでのOSSデータカタログは、Lyft社製のAmundsenやLinkdin製のDataHubといった社内用のデータカタログをスピンアウトしたOSSが多かったですが、OpenMetadataは逆に商用のデータカタログのエッセンスを取り込んでいる印象です。UI/UX、メタデータの付与の方法、権限管理などを必要十分なレベルまでシンプルにしつつ、PII情報のテンプレートタグや連携できるサービス数の多さなど、ユーザーにとってはクリティカルに嬉しい機能が盛り込まれています。
メジャーバージョンの1.0のリリースがいつになるかは不明ですが、製品ロードマップもしっかり用意されているので、興味がある方は Roadmap - OpenMetadata もどうぞ!
次節より実際の機能をご紹介していきます。公式サイトのリンクよりGoogle認証によるサンドボックス環境も用意されているので、ご自身でサクッと試しみてることも可能です。なお、本記事ではバージョン0.7.0なので、0.8.0以降UIや機能が大幅に変更されている可能性がある点はご注意ください。
インストール
Run OpenMetadata - OpenMetadata に沿って、ローカルのmacOSで立ち上ていきます。venvの作成は端折ってます。
$ python3 --version Python 3.9.6 $ pip3 --version pip 21.1.3 from /usr/local/lib/python3.9/site-packages/pip (python 3.9) $ docker --version Docker version 20.10.11, build dea9396 $ mkdir openmetadata-docker && cd openmetadata-docker $ pip3 install --upgrade 'openmetadata-ingestion' $ metadata docker --help Usage: metadata docker [OPTIONS] Checks Docker Memory Allocation Run Latest Release Docker - metadata docker --start Run Local Docker - metadata docker --start -t local -p path/to/docker-compose.yml Options: --start Start release Docker containers --stop Stop Docker containers (local and release) --clean Prune unused containers, images, volumes and networks -t, --type TEXT 'local' - local type will start local build of OpenMetadata docker -p, --path FILE Path to Local docker-compose.yml --help Show this message and exit. $ metadata docker --start [2021-12-23 10:50:58,614] INFO {metadata.cmd:188} - Running Latest Release Docker [2021-12-23 10:50:58,919] INFO {metadata.cmd:202} - docker-compose -f /var/folders/vx/y0ml3sns3xzbmcz0zyzcyjlm0000gq/T/docker-compose.yml up -d [2021-12-23 10:52:06,489] INFO {metadata.cmd:207} - Time took to get containers running: 0:01:07.569516 .........[2021-12-23 10:52:52,056] INFO {metadata.cmd:230} - Time took to get OpenMetadata running: 0:01:53.137061 ✔ OpenMetadata is up and running Head to http://localhost:8585 to play around with OpenMetadata UI. To checkout Ingestion via Airflow, go to http://localhost:8080 (username: admin, password: admin) Need support? Get in touch on Slack: https://slack.open-metadata.org/
Dockerが立ち上がった後、 http://localhost:8080 からAirflowのコンソールに入り、サンプルデータの挿入が完了しているかどうか確認します。
完了後、http://localhost:8585 からOpenMetadataのUIに入ります。
Explore
以下がOpenMetadataのトップページです。左には種類別のアセット数、真ん中にはユーザーアクティビティが表示されるようになっています。Explore
をクリックして、先ほど挿入したサンプルデータを見ていきます。
Explore
の画面では、上部のタブでアセットタイプの切り替え、左側のパネルで絞り込みが可能です。リストの項目には、サービスアイコン、テーブル名、所有者、Tier、利用頻度、データベース、概要が並ぶようになっています。試しにraw_order
をクリックしてみます。
テーブルの詳細画面は、画面上部にテーブルに対するメタデータ、下部にカラム情報が配置されています。
カラムに対してタグを付与できます。テンプレートでいくつか用意されているので、#User.CreditCardNumber
を選択してみます。
一つタグを付与すると、それに紐づいている別のタグ、ここではPersonalData.Personal
とPII.Sensitive
のタグも合わせて付与される仕様になっています。
画面右のタブでSchama
からSample Data
に切り替えると、プレビューが表示されます。
上部のタブをSchema
からProfiler
に切り替えると、カラムごとの統計値を確認するとこができます。分布がグラフになっている点が地味に凝っててすごい。
Lineage
タブはAirflowと連動しており、テーブルとジョブの関係性を視覚的に把握できるようになっています。
Manage
タブではOwner
(所有者)とTierを設定することができます。Ownerはユーザーだけなくチーム単位でも設定が可能です。OpenMetadataでは、Tierは重要度を表す情報として使用されており、判断の目安がわかる説明書きも用意されています。
Explore
の画面にもどり、次にTopics
を見ていきます。こちらはKafkaトピックがカタログ化されています。sales
をクリックしてみます。
詳細画面ではsales
トピックのスキーマや設定情報を確認することができます。
Dashboards
ではSupersetやTableauといったBIツールのダッシュボードがカタログ化されています。ETA Predictions Performance
をクリックしてみます。
Dashboardはダッシュボードへのリンクが貼られているぐらいで、付与できるメタデータの種類は少なめです。
最後はPipelines
です。こちらはAirflowなどのジョブ系のメタデータが一覧化されています。Snowflake ETL
をクリックしてみます。
こちらもDashboard
と同様、ジョブ画面へのリンクが貼られているくらいです。
基本的にどのアセットもDescription
とOwner
とTag
は変更・付与できるようになっており、あとは個別特有のメタデータが設定されている仕様ですね。
TeamsとUsers
OpenMetadataではTeams
という単位でユーザーとアセットの所有権が分けられています。ユーザーは複数のチームに入ることもできるので、チームをアセットに対する所有権やアクセス権用のロールとしても考えることができます。
Users
はTeams
の画面構成と少し似ていますが、こちらの画面ではユーザーに対してAdmin権限の付与が可能です。
ユーザーをクリックすると変更用のモーダルが表示されます。
バージョン0.7.0の段階では、Asset、Team、User、Adminの組み合わせでシンプルな権限管理が実現されています。
Tags
Tags
はOpenMetadataのコア機能で、コンプライアンスやビジネスメタデータをタグ形式で作成しておく箇所です。左側のTag Categories
の中に、複数のTag
がぶら下がる2層構造になっており、アセットにタグを付与する時はマージされた形で表示される仕組みになっています。下のテンプレートでは、GDPRで定義されているパーソナルデータ用のタグです。
User
のTag Categoryには、住所や銀行口座といった、特定の個人情報のカラムやアセットに付与するタグが定義されています。Associated tags
で関連する別のタグを紐づけることができるので、例えば#User.Address
に#PII.Sensitive
を紐づけて、#User.Address
を付与したアセットには#PII.Sensitive
も自動で付与する、みたいな運用が可能です。
試しに左上の+
ボタンからTag Categoryを作ってみます。Category Type
はDescriptive
かClassification
から選択できます。Category Type
は現状ただのメタデータのようで、これによって特に構造が変更されるわけではなさそうです。
Tag Categoryを作成したらAdd new tag
をクリックしてTagを新規作成します。
Name
とDescription
を入力してSave
をクリックします。
関連づけたい他のタグがあれば、Associated Tags
の列で編集を行います。
このようにTagでメタデータを定義し、クリックベースでアセットに情報を付与していくのがOpenMetadataの特徴の一つです。
ServicesとIngestions
OpenMetadataでは、Services
という単位でコネクションを設定しています。
bigquery_gcp
の設定は仮置きといった感じでした。
bigquery_gcp
をクリックすると、そのServiceで取得したデータベース名が表示されます。
shopify
をクリックすると、取得したshopify
配下のテーブル一覧を確認することができます。この画面は、Exploreからテーブルを表示した際に上のパスを遡る方法でもたどり着けます。
Ingestions
ではデータソースからテーブル情報を抽出するためのジョブを作成できます。Redshiftと接続しようとしたのですがうまくいかず、今回はUIの紹介だけになってしまいます。
右上のAdd ingestion
をクリックすると設定用のモーダルが表示されます。まず名前の入力とService、Ingestionタイプ選択を行います。
Connector config
で、データソースへの接続情報を入力していきます。
スケジュールの設定を行います。曜日指定の場合はボタンが表示されるなど、視覚的にスケジュール設定ができます。
UI側は結構作り込まれていますが、Redshift - OpenMetadataにあるようなプログラムで設定するIngestionとは設定項目が少し違っているので、接続できないのはまだ開発段階だからかもしれません。今後のアップデートに期待しましょう!
おわりに
「激熱!1日1製品!最強のデータ系SaaSはどれだ決定戦」アドベントカレンダーの製品紹介編は本日で終了です!
結果、モダンなSaaSで20製品、クラウドベンダー製で2製品、OSSで1製品という構成のアドベントカレンダーになりましたね。明日の最終日で個人的に「使える!」と思った製品を選出しますので、どうぞ最後までお付き合いください!